home *** CD-ROM | disk | FTP | other *** search
- property spr
- property memberPrim, memberUlt -- Cast members que serao animados
- property memPrim, memQuantos -- Membros: em numero
- property espera -- Tempo de espera entre cada mudanca (em ticks)
- property aleatorio -- True para mudanca aleatoria
- property ultimaTroca -- Hora em que foi feita ultima troca
- property fotoAtual
- property tempoAleatorio
- property proxEspera
- property delta
- property prioridade
- property trocaMetade, memMetade, quantosMetade, atualMetade
- property memoria, limitado
-
- on getBehaviorDescription
- return "Anima sprites"
- end
-
- on getPropertyDescriptionList
- set p_list = [ ¬
- #memberPrim: [ #comment: "Primeiro membro da animacao", ¬
- #format: #string, ¬
- #default: "" ], ¬
- #memberUlt: [ #comment: "Ultimo membro da animacao", ¬
- #format: #string, ¬
- #default: "" ], ¬
- #espera: [ #comment: "Espera entre cada troca em 1/60s (velocidade)",¬
- #format: #integer,¬
- #default: 60 ],¬
- #aleatorio: [ #comment: "Animacao randomica",¬
- #format: #boolean,¬
- #default: false ],¬
- #tempoAleatorio: [ #comment: "Tempo de animacao randomica",¬
- #format: #boolean,¬
- #default: false ],¬
- #delta: [ #comment: "Espera no inicio da animacao",¬
- #format: #integer,¬
- #default: 0 ],¬
- #prioridade: [ #comment: "Prioridade da animacao (se anima em momentos criticos)",¬
- #format: #integer,¬
- #default: 0 ],¬
- #memoria: [ #comment: "Memoria minima para animacao",¬
- #format: #integer,¬
- #default: 0 ]¬
- ]
- return p_list
- end
-
- on beginSprite me
- set spr = the spriteNum of me
- inicializaAnima me
- if prioridade < 0 then
- set prioridade = 0
- end if
-
- set quantosMetade = 50
- set memMetade = the number of member "TrekFotosT_prim"
- set atualMetade = memMetade
- set trocaMetade = true
- puppetSprite spr + 1, true
-
- end
-
- on inicializaAnima me
- set memPrim to the number of member memberPrim
- set memQuantos to (the number of member memberUlt) - memPrim + 1
- set proxEspera = random(espera)
- global myMemSize
- if myMemSize > memoria * 1024 * 1024 then
- set limitado = false
- else
- puppetSprite spr, true
- set limitado = true
- set m = random(memQuantos) - 1 + memPrim
- set the member of sprite spr to member m
- end if
- put 0 into fotoAtual
- set ultimaTroca = 0
- if delta > 0 then set the visibility of sprite spr to false
- end
-
- on cleanSprite me
- puppetSprite (the spriteNum of me),false
- puppetSPrite (spr + 1), false
- set the visibility of sprite spr to true
- set the visibility of sprite spr to true
- end
-
- on idleSprite me
-
- if limitado then return
-
- if not the visibility of sprite spr then return
- global gMustUpdate
- if ultimaTroca = 0 then set ultimaTroca = the timer
-
- set tmp = the timer - ultimaTroca
- if delta > 0 and tmp > delta then
- set ultimaTroca = the timer
- set the visibility of sprite spr to true
- set delta = 0
- set tmp = 0
- end if
-
- -- Testa se ja e' hora de trocar figura
- if tempoAleatorio then
- if tmp > proxEspera then
- set tmp = true
- set proxEspera = random(espera)
- else
- set tmp = false
- end if
- else
- if trocaMetade and tmp > espera / 2 then
- set trocaMetade = false
- set atualMetade = atualMetade + 1
- if atualMetade >= memMetade + quantosMetade then
- set atualMetade = memMetade
- end if
- set the member of sprite (spr+1) to atualMetade
- set gMustUpdate = true
- end if
-
- if tmp > espera then
- set tmp = true
- else
- set tmp = false
- end if
- end if
-
- -- Troca, se ja' for hora e se nao for em area critica
- global gCritico
- if tmp and prioridade >= gCritico then
-
- -- Descobre qual a proxima figura a trocar
- if (aleatorio) then
- put random(memQuantos - 1) - 1 into tmp
- if tmp >= fotoAtual then put 1 + tmp into tmp
- put tmp into fotoAtual
- else
- put fotoAtual + 1 into fotoAtual
- if fotoAtual >= memQuantos then put 0 into fotoAtual
- end if
-
- -- Muda figura e updateStage
- set the member of sprite (the spriteNum of me) to memPrim + fotoAtual
- set gMustUpdate to true
- put the timer into ultimaTroca
- set atualMetade = atualMetade + 1
- if atualMetade >= memMetade + quantosMetade then
- set atualMetade = memMetade
- end if
- set the member of sprite (spr+1) to atualMetade
- set trocaMetade = true
- end if
- end